home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / PowerD / powerd / lib / startup.ass < prev    next >
Encoding:
Text File  |  2002-10-28  |  2.0 KB  |  93 lines

  1. START    movem.l    d0/a0,-(a7)    ;save initial values
  2.     movea.l    $4.w,a6
  3.     suba.l    a1,a1
  4.     jsr    (-294,a6)        ; FindTask()
  5.     move.l    d0,a4
  6.     tst.l    (172,a4)        ; process.cli
  7.     beq.s    workbench
  8.     movem.l    (a7)+,d0/a0    ;restore regs
  9.     bra.s    cli        ;and run the user prog
  10. workbench    lea    (92,a4),a0    ; process.msgport
  11.     jsr    (-384,a6)        ;wait for a message (WaitPort(())
  12.     lea    (92,a4),a0    ; process.msgport
  13.     jsr    (-372,a6)        ;then get it (GetMsg())
  14.     move.l    d0,_wbmessage        ;save it for later reply
  15.     movem.l    (a7)+,d0/a0    ;restore
  16. cli    bsr.s    _START        ;call our program
  17.     move.l    d0,-(a7)        ;save it
  18.     tst.l    _wbmessage
  19.     beq.s    exittodos        ;if I was a CLI
  20.     jsr    (-132,a6)        ; Forbid()
  21.     move.l    _wbmessage,a1
  22.     jsr    (-138,a6)        ; Permit()
  23. exittodos    move.l    (a7)+,d0        ;exit code
  24.     rts
  25.  
  26. _START    move.l    a0,_arg
  27.     clr.b    (-1,a0,d0.w)
  28.     movea.l    $4.w,a6
  29.     move.l    a6,_ExecBase
  30.     lea    (DOSName,pc),a1
  31.     moveq    #37,d0
  32.     jsr    (-552,a6)        ; OpenLibrary()
  33.     move.l    d0,_DOSBase
  34.     beq.s    .FINISH
  35.  
  36.     movea.l    d0,a6
  37.     jsr    (-60,a6)        ; Output()
  38.     move.l    d0,_stdout
  39.     jsr    (-54,a6)        ; Input()
  40.     move.l    d0,_stdin
  41.  
  42.     movea.l    $4.w,a6
  43.     lea    (IntName,pc),a1
  44.     moveq    #37,d0
  45.     jsr    (-552,a6)        ; OpenLibrary()
  46.     move.l    d0,_IntuitionBase
  47.     beq.s    .CLOSEDOS
  48.  
  49.     lea    (GfxName,pc),a1
  50.     moveq    #37,d0
  51.     jsr    (-552,a6)        ; OpenLibrary()
  52.     move.l    d0,_GfxBase
  53.     beq.s    .CLOSEINT
  54.  
  55.  
  56.     xref    _main
  57.     jsr    _main        ; a6 is stored
  58.     move.l    d0,d2
  59.  
  60.  
  61.     movea.l    _GfxBase,a1
  62.     jsr    (-414,a6)        ; CloseLibrary()
  63. .CLOSEINT    movea.l    _IntuitionBase,a1
  64.     jsr    (-414,a6)        ; CloseLibrary()
  65. .CLOSEDOS    movea.l    _DOSBase,a1
  66.     jsr    (-414,a6)        ; CloseLibrary()
  67. .FINISH    move.l    d2,d0
  68.     rts
  69. ****************************************
  70.     xdef    _SysBase
  71.     xdef    _ExecBase
  72.     xdef    _DOSBase
  73.     xdef    _IntuitionBase
  74.     xdef    _GfxBase
  75.     xdef    _arg
  76.     xdef    _stdout
  77.     xdef    _stdin
  78.     xdef    _wbmessage
  79. ****************************************
  80. _SysBase
  81. _ExecBase        dc.l    0
  82. _DOSBase        dc.l    0
  83. _IntuitionBase    dc.l    0
  84. _GfxBase        dc.l    0
  85. _arg        dc.l    0
  86. _stdout        dc.l    0
  87. _stdin        dc.l    0
  88. _wbmessage    dc.l    0
  89. ****************************************
  90. DOSName    dc.b    'dos.library',0
  91. IntName    dc.b    'intuition.library',0
  92. GfxName    dc.b    'graphics.library',0
  93.